package cdu.sl.mapper;

import cdu.sl.annotation.AutoFill;
import cdu.sl.common.enums.OperationType;
import cdu.sl.domain.po.ClassMember;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 班级成员Mapper接口
 */
@Mapper
public interface ClassMemberMapper extends BaseMapper<ClassMember> {

    @AutoFill(OperationType.INSERT)
    int insert(ClassMember entity);

    /**
     * 根据班级ID查询班级成员列表
     * @param classId 班级ID
     * @return 班级成员列表
     */
    @Select("SELECT * FROM tb_class_members WHERE class_id = #{classId}")
    List<ClassMember> selectByClassId(@Param("classId") Long classId);

    /**
     * 根据用户ID查询该用户加入的班级列表
     * @param userId 用户ID
     * @return 班级成员列表
     */
    @Select("SELECT * FROM tb_class_members WHERE user_id = #{userId}")
    List<ClassMember> selectByUserId(@Param("userId") Long userId);

    /**
     * 审核学生状态
     * @param classId 班级id
     * @param userId  用户id
     * @param status  状态
     */
    @Update("UPDATE tb_class_members SET status=#{status} WHERE class_id=#{classId} AND user_id=#{userId} ")
    void updateMembersStatus(Long classId,Long userId,Integer status);


    /**
     * 管理员更新班级审核等级之后 , 放行所有待审核学生
     * @param classId 班级id
     */
    @Update("UPDATE tb_class_members SET status=1 WHERE class_id=#{classid} and status=0")
    void updateMemberStatusBatch(Long classId);


} 